package dingo

import (
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
	"log"
	"yundian/internel/pkg/dingo/global"
)

// InitViper 初始化配置 - 使用Viper组件
func InitViper(path string) {
	viper.SetConfigFile(path)

	if err := viper.ReadInConfig(); err != nil {
		log.Fatal("viper.ReadInConfig failed : ", err.Error())
	}

	// 反序列化到struct
	if err := viper.Unmarshal(global.Cfg); err != nil {
		log.Fatal("viper.Unmarshal failed : ", err.Error())
	}

	// 监听配置文件
	viper.WatchConfig()
	viper.OnConfigChange(func(in fsnotify.Event) {
		log.Println("配置文件已更新")
		if err := viper.Unmarshal(global.Cfg); err != nil {
			log.Fatal("viper.Unmarshal failed : ", err.Error())
		}
	})
}

func InitConstViper(path string) {
	viper.SetConfigFile(path)

	if err := viper.ReadInConfig(); err != nil {
		log.Fatal("viper.ReadInConfig failed : ", err.Error())
	}

	// 反序列化到struct
	if err := viper.Unmarshal(global.Const); err != nil {
		log.Fatal("viper.Unmarshal failed : ", err.Error())
	}

	// 监听配置文件
	viper.WatchConfig()
	viper.OnConfigChange(func(in fsnotify.Event) {
		log.Println("配置文件已更新")
		if err := viper.Unmarshal(global.Const); err != nil {
			log.Fatal("viper.Unmarshal failed : ", err.Error())
		}
	})
}
